perm filename SOGM.FRM[LSP,JRA] blob sn#126184 filedate 1974-10-15 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	~This is first attempt to write evaluator for extension of lisp
C00006 00003	~SELECTORS
C00007 00004	~THE PREDICATES
C00009 00005	~THE CONSTANTS
C00010 00006	~THE CONSTRUCTORS
C00011 00007	~PRIMITIVE APPLICATIONS--DELTA RULES
C00014 ENDMK
C⊗;
~This is first attempt to write evaluator for extension of lisp
~with form  valed variables. this is really (as usual) an evlauaator
~operating on REPRESENTATION(!!!) of lang, but mapping should be smooth!!
~UNDEFINED SHOULD BE CHECKED...CAN OCCUR FROM (CAR @A) ETC...

(DE SOGM (EXP ENV)
	(COND
	 ((IS_CONST EXP) 	EXP)
	 ((IS_VAR EXP)   	(VALUE EXP ENV))
	 ((IS_COND EXP)  	(EVCOND  (EXPR EXP) ENV))
	 ((IS_FUN_ARGS EXP)	(APPLY_S (FUN EXP) 
					 (LIST_OF_EVALED_ARGS (ARGS EXP) ENV) 
					 ENV))
	 (T UNDEF)
	  ))

(DE APPLY_S(FN ARGS ENV)
	(COND
	 ((IS_UNDEF FN)UNDEF)
	 ((MEMBER UNDEF ARGS) UNDEF)
	 ((IS_CAR FN)  	    (APPLY_CAR ARGS))
	 ((IS_CDR FN)       (APPLY_CDR ARGS))
	 ((IS_CONS FN)      (APPLY_CONS ARGS))
	 ((IS_ATOM FN)      (APPLY_ATOM ARGS))
	 ((IS_EQ FN)        (APPLY_EQ ARGS))
	 ((IS_NAME FN) 	    ((LAMBDA(Y)(COND((EQ Y FN) (MAKE_FORM FN ARGS))
				       	    (T (APPLY_S Y ARGS ENV))))(SOGM FN ENV)))
	 ((IS_LAMBDAiGA≥αBN>≡j↓"
>%Iα~9J↓":⊗9B⊗:YαBZεJ~α~9%∧
J≡M∧*:Y%JH4(%αA"&LDbε
⊗b↓"∞ε∩α~9%J↓"εB∧bdbMαB2ε
,`b
>%Iα~9J4($HH$&ε∀:M4PH$$$JB:⊗\D*:Y↓Db&NQαB2ε
,`b:εl)α~9JH4($HH$$%αB2&N"↓"2ε∀*0b
|"eα~rI$4(HH$$$Jα⊗:YJI$4(J↓"Qα,r∩⊗→Hh(%↓αI$4(hQ"∩∃∧"⊗:>$)↓"⊗E↓$4(JB∞>: h(%↓BB&Lbu*6
⊗∩α⊗bAJα⊗bAHh(%↓BB&Lb%∩VR!∧*bA%αα⊗bAHh(%↓BB&Lb4
2N∃∧*bA%αα⊗bAHh(%↓BB&Lb≤*bBI∧*bA%αα⊗bAHh(%↓αI$4(hQ"∩∃¬2ε2V*BZεI∧*:Y$hP%"∞|r⊂4(J↓!":,b1α⊗u1%αZ
⊃$4(J↓!"⊗
αZεIαB:ε6*B~&J≥!α⊗:2I%%↓E2ε1"4JJNQ∧*:Y%JH4(%αBQ↓"4
2V∃¬2εI↓E∩⊗NQ∧*:Y%JH4(%α↓%$4Ph)"∩*α⊗Z∞|r⊃↓"-BAα⊗u1$4)BB2ε6∀"¬"∃Hh(%"≤z:⊂4PI↓!"M_bV:$*→α∃JαV:∩,1$4(J↓!"&→BRJV$Aα∃%αBN>≡j↓"∃α-BA%α,rY%$hP%↓!DJLb~bN∃α*I↓"N|:5↓"⎇9α⊗bαIα⊗:2I$4(J↓"Q↓Djε.∀D~>:⊃αα∀4(HH%"N|:5↓"*α⊗bAJα⊗:YHh($%α↓%"≤z≡5↓Dz]α⊗E↓&⊗:2I%$4PI↓↓$hQ↓%"≤z≡5"αα⊗bAJα⊗:YJH4(%α↓$4(hQ"∩∃∧b&NPDz_b⊗4
2⊗⊂D
J≡MD
J≡M∧*:Y$hP%"∞|r⊂4(J↓!":,b1αε∀:M%αtJ1$4PI↓"QαB∞>:~↓"N><i↓"~M∩NQα
∩≡M%∧*:Y%h(%↓α↓↓"2M~Pb>1B⊗Zεd*⊂bε∀:M↓"∀*NQα
∩≡M%∧*:Y%JH4(%α↓%$4Ph)"∩*α:⊗\D*:Y↓E2εJM¬2ε2M∧*:Y$hP%"∞|r⊂4(J↓!":,b1αZ
∩M%α,rY$4PI↓"QαB∞>:~↓"6ε\(b⊗:%∩e↓"4JJNQ¬2εJMJB~&J≥!αZεe→%$4PI↓↓↓α↓↓↓↓α↓":⊗9B⊗:YαBJ⊗N"αZεJ~I"J⊗≥!αZεe→%α⊗u1%%$hP%↓↓JH4(0jN,b⊗∞R⎇∩L4(hQ"∩∃∧2&JN"↓"a%D~εIαBI$4(hQ"∩∃¬∩⊗NQαBa%"≤"IαaJH4(4RB∩∃α-BBI"BI"∞∩∩αa%$hP4)"$)α~VrBa%"≤
IαaJH4(4RB∩∃α
∩≡M"BI"∞∩∩αa%$hP4)"$)α
>%I"a%D~ε∩∩∩αa%$hP4)"$)αZε∃→"a%D~ε∩I¬A%$4Ph)"∩*α:ε6*Ba%"≤
IαaJH4(4RB∩∃α4
1"aJB∞∩I¬A%$4Ph)"∩*αA"aJB∞εI¬A%$4Ph)"∩*α∃"aJB∞ε∩∩αa%$hP4)"$)α>]EA%"∞"∩IαBI$4(hQ"∩∃∧bε
⊗aB
>∩JBa%"≤
∩∩I¬A%$4Ph)"∩*α2ε
,`b:εl)"a%D~ε∩I¬A%$4P0jRD)αBJ,"&∞ε$*L4)D"∃α&→B∞>:≥!"⊗bαH4(%D~>:⊂hP%↓!DJLb:,j
⊗I∧*bA%¬!$4(J↓!"&→BRJV$Aα⊗bαI↓αQHh(%↓BB&Lb4
2N∃∧*bA%ααQ$4PI↓!"M_bN⊗EαIα⊗E↓%↓α"H4(%αBQ↓↓α↓↓↓↓α↓↓↓↓α↓α:&bH4(%α↓%$4Ph)"∩*α&Lb4
I"aJBε:⊃D
R>5¬A%":⎇!↓"&→B∞>:≥!αa%JB:>QDJLbVt"⊗→αBI%%$hP4)"$)α&LDrε6∃EA%"εt!"εR|iαa%Dr>Q↓DJLb∞|rNQαBI%":⎇!"&LE*:∩⊗2αa%%JH4(4RB∩∃αM_b∞>t!"a%D*E"∞
⊃αa%αBFV>$)α∞>t!%%$hP4)"$)α&LD2V8b
∩≡M↓EA%↓"⎇⊃"&LDrε6∃D~εIαBI%"&→B2ε6∀"¬"∞
⊃αa%JB&Lbd

⊗1D~εεI¬A%%%Hh(4)D"∃α&→B2ε
,a"a%D*Eαa∧α2ε
,a%$4Ph)"∩*α&Lb≤
I↓"BI"⊗E¬A"FV⎇"∃α∞
⊃%%$hP4)"$)α&LD~∩I↓EA%"⊗
αa"F,zR∃α≤"I%%Hh(4(hQ"∩∃∧JLb∞|rM↓"BI"⊗E¬A"FV⎇"∃α∞|rM%%Hh(4)D"∃α&→B⊗E↓EA%"⊗
αa"F,zR∃α-	%%$hP4)"$)α&LD
R>5αBa%"-	αa"
*>R∃∧
R>5JI$4(hQ"∩∃∧JLb2j
∩¬EA%"⊗
↓"∞ε∩αa%"
*>R∃∧bε6
$	%%$hP4)"$)α&LDrV6
-⊃"a%DrV6
-∩AαaJH4(4RB∩∃αM_bRJ-"!"aJB⊗FVa↓αa¬∩⊗@b%∩V∃%Hh(4)D"∃α&→B~ε2≤)"a%D*FVεbαaαJ-b~εe~∃%$hP4)"$)α&LE*:∩⊗2Ba%"-	αaα,r∩⊗→JH4(4RB∩∃αM_bN⊗EαI"aJB⊗E"≤
IαaJ↓"FV⎇"∃αF,zR∃%JH4(4Ph(0jRD)α∞>u~Rε:%_4(4RBN⊗R
αV:∩,1α↓**Q$4(hQ"N⊗%	α~εe~∃α↓T2ε2N*Q$4(hQ"N⊗%	αRJ,)↓α↓U"JV∃RH4(4RBN⊗R
αJ⊗@E"JV∃αB2&N"ααFV⎇"∃αR∃*∃%$hP4)"≤*REα∀*@b~bN∃↓Db&NQ∧αFV>$)α~εe~∃%$hP0jRD)α∞>u~RJV≥">JLhQ"∩∃∧jε.∀D2>J5EAαe%D~>:M¬Aαe%Hh(4)D"∃α6Z∀bVt
Je"2αa%"dJNQα2αa%$hP4)"$)α6ε\(b∞>u~Q"aJB6ε.)BV:ε∃IααF,zR∃αBI$4(hQ"∩∃∧jε.∀D∩&:ε∃I"→αBαe%"dJNQα2αaαeJH4(4RB∩∃αl
.∀b,rRJeEAαe%D~>:M¬Aαe%Hh(4)D"∃α6Z∀b∞|r⊃"a¬Iαi$hP%"∞|r⊂4(J↓!"&→BV:∩,1αe%¬*:∩⊗2H4(%αA"&LE*:∩⊗2αi%α,r∩⊗→Hh(%↓E!↓↓↓α↓↓↓↓α↓↓↓"dJNQα∧~>:⊃¬AαeαRI$4(J↓%$4Ph(0jB∀J6&RM2∃αε¬α2&∞
"&>:~i6∩⊗e"¬αJ,b⊗L4Ph(4)D"∃αε¬α2db≤
I"aJBεBBeHb∞ε⊃B∞∩I∧α∞εI¬A%$4Ph)"∩*αεBBeHb∞∩∩Ba%"
αB2dD~εHb≤"Iαα≤"IαaJH4(4RB∩∃α
αB2dD~εHb≤"I"→¬I$4)αA"2εl∩∩¬"
∩≥E$hP%"∞|r⊂4(J↓!"&→BZεI∧
J≥EJ↓↓↓↓Djε.∀E*:εJJ↓α→α
∩≥E%Hh(%↓BB&Lb,r∩⊗→∧
J≥EJ↓αV:$*→$4PI↓!"M_b∞>u~Qαε∀9E%↓αA"2εl∩∩¬"
∩≥%"≤z:⊂4PH$$$JA"εR|iαεJ:IαV:$*→$4PH$$$JBQ↓"l
.∀b≤z:NQD1αεJ:I%%%Hh($$HI"∞ε%⊃αεJ;	%%$hP%↓""↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓"6Z∀bVt
Jeα2αεJ≥
I$4(JI$4)α↓↓↓↓α↓"∞ε∩αe%$hQ$4(hP4)"$)αεB∧bdb∞|rM"aHh)!"d
6
∩
BεJ≥
αεJ≥∩H4(%D~>:⊂hP%↓!DJLbVt"⊗→α
∩≥E%ααV:∩,1$4(J↓!"&→BV:∩,1αεJ;⊃%↓α,r∩⊗→Hh(%↓BB&Lb4
Iαε∀9E%↓α↓↓"6Z∀b
LrεJe∧α∞>:~αεJ≥
αεJ≥∩I$4(J↓!"&→BZεI∧
J≥IJ↓↓↓↓Djε.∀D∩&:ε∃Iαα∞|rMαε∀9Eαε∀9I%$hP%↓!DJLb∞|rNQα
∩≥E%α↓!"2j
∩¬D	Eα¬∩I"6ε\(b∞>u~Q↓"≤z:Mα	α¬IJI$4(HH$%"≤
∩Iα
∩≥E%D~ε∩I∧
J≥IJI$4(J↓"Q↓α↓↓↓↓α↓↓↓↓α↓↓↓↓Djε.∀D∩&:ε∃Iαα∞|rMαε∀9Eαε∀9I%$hP%%%D~εIαBI"∞ε%⊃αa%Hh)$4Ph)"∩*αεBBeHb⊗EEA$4)BB2ε6∀"¬"ε∀;h"-1 ARG2)
	(COND
	 ((IS_UNDEF ARG1)  UNDEF)
	 ((IS_UNDEF ARG2)  UNDEF)
	 ((AND(IS_CONST ARG1)
	      ((LAMBDA(A1)(NOT(ATOM A1)))
		(CADR ARG1))) 
			   UNDEF)
	 ((AND(IS_CONST ARG2)
	      ((LAMBDA(A1)(NOT(ATOM A1)))
		(CADR ARG2))) 
			   UNDEF)
	 ((IS_VAR ARG1)    (MAKE_BINARY @EQ ARG1 ARG2))
	 ((IS_VAR ARG2)    (MAKE_BINARY @EQ ARG1 ARG2))
	 ((AND(IS_CONST ARG1)
	      (IS_CONST ARG1))
			   (MAKE_CONST
		           ((LAMBDA(A1 A2)(COND
					   ((EQ A1 A2) TRUE)
					   (T          FALSE)))
				(CADR ARG1)(CADR ARG2))))
	 (T                (MAKE_BINARY @EQ ARG1 ARG2))
	))(CAR X)(CADR X))
)

(DE APPLY_ATOM(X)
((LAMBDA(ARG1)
	(COND
	 ((IS_UNDEF ARG1) UNDEF)
	 ((IS_VAR ARG1)   (MAKE_UNARY @ATOM ARG1))
	 ((IS_CONST ARG1) (MAKE_CONST
				((LAMBDA(A1)(COND
					((ATOM A1)TRUE)
					(T        FALSE)))
				(CADR ARG1))))
	 (T               (MAKE_UNARY @ATOM ARG1))
	))(CAR X))
)